from django.conf import settings

ROLE_PERMISSIONS = {
    '研发角色': ['tickets.can_submit_ticket', 'tickets.can_view_own_ticket'],
    '研发管理': ['tickets.can_approve_level1_ticket'],
    '技术部管理': ['tickets.can_approve_level2_ticket'],
    '运维管理': ['tickets.can_approve_final_tickets'],
    '系统管理员': ['tickets.can_manage_system_tickets'],
    '数据库管理员': ['tickets.can_manage_database_tickets'],
    '产品': ['tickets.can_view_all_ticket'],
    '超级用户': None,  # 超级用户默认拥有所有权限
}

ROLE_MENUS = {
    '研发角色': [
        {'name': '我的工单', 'icon': 'fas fa-tasks', 'url': '/admin/tickets/ticket/', 'newTab': False},
        {'name': '创建工单', 'icon': 'fas fa-plus', 'url': '/admin/tickets/ticket/add/', 'newTab': False},
    ],
    '研发管理': [
        {'name': '审批研发工单', 'icon': 'fas fa-check', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '技术部管理': [
        {'name': '审批技术工单', 'icon': 'fas fa-check-double', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '运维管理': [
        {'name': '审批运维工单', 'icon': 'fas fa-tools', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '系统管理员': [
        {'name': '系统工单管理', 'icon': 'fas fa-server', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '数据库管理员': [
        {'name': '数据库工单管理', 'icon': 'fas fa-database', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '产品': [
        {'name': '系统工单管理', 'icon': 'fas fa-server', 'url': '/admin/tickets/ticket/', 'newTab': False},
        {'name': '数据库工单管理', 'icon': 'fas fa-database', 'url': '/admin/tickets/ticket/', 'newTab': False},
    ],
    '超级用户': [
        {'name': '用户管理', 'icon': 'fas fa-user', 'url': '/admin/auth/user/', 'newTab': False},
        {'name': '组管理', 'icon': 'fas fa-users-cog', 'url': '/admin/auth/group/', 'newTab': False},
    ],
}




def get_user_role(user):
    """
    根据用户权限动态确定角色
    """
    if user.is_superuser:
        return '超级用户'
    for role, perms in ROLE_PERMISSIONS.items():
        if perms and all(user.has_perm(perm) for perm in perms):
            return role
    return None


def get_simpleui_config(user):
    """
    根据用户角色动态生成 SIMPLEUI_CONFIG 配置
    """
    role = get_user_role(user)
    if not role:
        return {
            'system_keep': False,
            'menu_display': [],
            'dynamic': True,
            'menus': []
        }

    role_menus = ROLE_MENUS.get(role, [])
    menu_display = [menu['name'] for menu in role_menus]
    if role == '超级用户':
        menu_display = ['工单管理'] + menu_display

    return {
        'system_keep': role == '超级用户',
        'menu_display': menu_display,
        'dynamic': True,
        'menus': role_menus
    }


def simpleui_config_middleware(get_response):
    """
    中间件：动态配置 SIMPLEUI_CONFIG
    """

    def middleware(request):
        if request.user.is_authenticated:
            settings.SIMPLEUI_CONFIG = get_simpleui_config(request.user)
        return get_response(request)

    return middleware


